package com.parkinglot.service;


import com.parkinglot.core.Result;
import com.parkinglot.parmeter.GarageUser;
import com.parkinglot.parmeter.HaveCarnumber;
import com.parkinglot.parmeter.UserCarMonthvip;
import com.parkinglot.parmeter.UserParm;
import com.parkinglot.pojo.User;
import com.parkinglot.vo.UserCarMonthVo;
import com.parkinglot.vo.UserCarVo;
import com.parkinglot.vo.UserVo;

import java.util.List;

/**
 * (User)表服务接口
 *
 * @author makejava
 * @since 2020-11-13 14:52:47
 */
public interface UserService {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    UserVo queryById(String id);

    /**
     * 查询多条数据
     *
     * @param offset 查询起始位置
     * @param limit  查询条数
     * @return 对象列表
     */
    List<User> queryAllByLimit(int offset, int limit);

    /**
     * 新增数据
     *
     * @param userParm 实例对象
     * @return 实例对象
     */
    int insert(UserParm userParm);

    /**
     * 修改数据
     *
     * @param user 实例对象
     * @return 实例对象
     */
    UserVo update(User user);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Integer id);

    List<UserVo> getalluser();

    List<UserVo> userzrcount();

    List<UserVo> userweekcount(String gardecode);

    List<UserVo> usermonthcount(String gardecode);

    /**
     * 扫码进入停车场查询用户是否存在  不存在就生成车牌号并添加到数据库
     * @param garageUser
     * @return
     */
    List<UserCarVo> queryUserByid(GarageUser garageUser);
    /**
     * 扫码出停车场
     */
//    Result outgarage(GarageUser garageUser);
    /**
     * 无牌车绑定车牌信息并生成订单
     */
    Result BindCarNumber(GarageUser garageUser)throws Exception ;
    UserCarMonthVo monthBindCarNumber(GarageUser garageUser);
    /**
     * 查询用户是否存在
     */
    UserVo queryuserexistence(String userid);

    /**
     *查询用户绑定的车牌
     * @param userCarMonthvip
     * @return
     */
    Result getusercarmonthvip(UserCarMonthvip userCarMonthvip);
    /**
     * 有牌车入场 扫了预付款二维码 中间件给的车牌号 需要用户去绑定车牌
     */
    Result havecarnumber(HaveCarnumber haveCarnumber);
    /**
     * 校验车牌号是否正确
     */
    UserCarVo checkcarnumber(String garageid,String userid, String carnumber);
    /**
     * 查询用户绑定的车牌 有牌车待支付，已支付一直展示，无牌车待支付展示，已支付不展示
     */
    Result getusercarpaysattus(String garageid,String userid);
}